package com.chenfan.mcn.model.vo;

import com.chenfan.mcn.enums.PaidStatusEnum;
import com.chenfan.mcn.enums.StarMonthlySettlementStatusEnum;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.Objects;

/**
 * 红人月度结算单-列表VO
 *
 * @author wulg
 * @date 2022-01-14
 **/
@Data
public class StarMonthlySettlementListVO implements Serializable {

    private static final long serialVersionUID = -683185175060407787L;

    /**
     * 结算单ID
     */
    private Long id;

    /**
     * 结算单号
     */
    private String settlementCode;

    /**
     * 单据状态：0_待提交、1_审批中、2_待打款、3_审批拒绝、4_已撤回、5_部分打款、6_已打款、9_已作废
     */
    private Integer approvalStatus;

    /**
     * 单据状态名称
     */
    private String approvalStatusName;

    /**
     * 线上打款状态：0_待打款、1_部分打款、2_已打款
     */
    private Integer onlinePaidStatus;

    /**
     * 线上打款状态名称
     */
    private String onlinePaidStatusName;

    /**
     * 线下打款状态：0_待打款、1_部分打款、2_已打款
     */
    private Integer offlinePaidStatus;

    /**
     * 线下打款状态名称
     */
    private String offlinePaidStatusName;

    /**
     * 红人ID
     */
    private Long starId;

    /**
     * 红人昵称
     */
    private String starNickname;

    /**
     * 备注
     */
    private String remark;

    /**
     * 财务确认可分成金额（元）
     */
    private BigDecimal financeConfirmedDevidedAmount;

    /**
     * 线上结算发票金额（元）
     */
    private BigDecimal onlineInvoiceAmount;

    /**
     * 线下报销发票金额（元）
     */
    private BigDecimal offlineInvoiceAmount;

    /**
     * 线上结算打款金额（元）
     */
    private BigDecimal financePaidAmount;

    /**
     * 应扣税额（元）
     */
    private BigDecimal taxableAmount;

    /**
     * 审批实例ID
     */
    private Long flowId;

    /**
     * 审批状态
     */
    private String flowStatusName;

    /**
     * 创建人
     */
    private String createName;

    /**
     * 创建时间
     */
    private Date createDate;

    public String getApprovalStatusName() {
        if (Objects.nonNull(getApprovalStatus())) {
            return StarMonthlySettlementStatusEnum.getStatusName(getApprovalStatus());
        }
        return null;
    }

    public String getOnlinePaidStatusName() {
        if (Objects.nonNull(getOnlinePaidStatus())) {
            return PaidStatusEnum.getStatusName(getOnlinePaidStatus());
        }
        return null;
    }

    public String getOfflinePaidStatusName() {
        if (Objects.nonNull(getOfflinePaidStatus())) {
            return PaidStatusEnum.getStatusName(getOfflinePaidStatus());
        }
        return null;
    }
}
